﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Web.UI.WebControls;
using System.ComponentModel;
using System.Web.UI;

namespace UIControls
{
    [ToolboxData("<{0}:TextBox_Date runat=server></{0}:TextBox_Date>"),
    DefaultProperty("Text")]
    public class TextBox_Date:TextBox
    {
        readonly string MaxDateKey = "MaxDate";
        readonly string MinDateKey = "MinDate";

        
        public DateTime  MaxDate
        {
            get
            {
                object text = ViewState[MaxDateKey ];
                if (null == text)
                    return DateTime .MaxValue ;
                else
                    return Convert.ToDateTime(text);
            }
            set
            {                
                ViewState[MaxDateKey] = value;
            }
        }
        
        public DateTime  MinDate
        {
            get
            {
                object text = ViewState[MinDateKey];
                if (null == text)
                    return DateTime.MinValue ;
                else
                    return Convert.ToDateTime(text);
            }
            set
            {
                ViewState[MinDateKey] = value;
            }
        }

        public bool IsDate
        {
            get
            {
                DateTime dt;
                DateTime.TryParse(Text, out dt);
                bool b=(!dt.Equals(DateTime.MinValue));
                return b;
            }
        }

        public DateTime  TexAsDateValue
        {
            get
            {
                DateTime dt;
                DateTime.TryParse(Text, out dt);
                return dt;                
            }
        }

        /// <summary>
        /// Если введенный текст - не дата или не входит в заданный диапазон- изменяем на пустое значение        
        /// </summary>
        /// <param name="writer"></param>
        protected override void Render(System.Web.UI.HtmlTextWriter writer)
        {            
            bool bCheck = (IsDate ? (TexAsDateValue > MinDate && TexAsDateValue < MaxDate) : false);
            Text = (bCheck ? Text : string.Empty);             
            base.Render(writer);
        }  
    }
}
